在 DAY17 的時候已經介紹過如何把 row data 呈現在頁面了,但有時候會遇到一種情況就是欄位太多不可能一次全部顯示在 List 上,也有遇過客戶認為某些資料是屬於敏感資料不要將其放在 List 避免被閒雜人等截圖洩露隱私,這次就來介紹 Detail 的功能,該功能可以將某一 row data 用另外的視窗單獨顯示,但一樣不能編輯,下面就開始實作。
跟 List 一樣會需要編輯 route、Controller,首先在 route 的部分加上$router->get('/{id}', 'ProductController@detail');
Controller 的部分則是新增 detail Method
public function detail($id, Content $content)
{
return $content->title($this->title())
->description($this->description()['show'] ?? trans('admin.show'))
->body($this->show($id));
}
引入 Show classuse Dcat\Admin\Show;
增加 description 屬性內容
protected $description = [
'index' => '列表',
'detail' => '詳細',
];
寫 show Method
protected function show($id)
{
return Show::make($id, new ProductRepository(), function (Show $show) {
$show->name('商品名稱');
$show->type('類型')->using(Product::typeTranslate);;
$show->outline('大綱');
});
}
show 跟 grid 的用法會有些許的不同, gird 會使用 column 來設定要顯示的欄位及欄位名稱,show則是直接使用 column name來設定,顯示的修改用 using 或是 display 都可以,差別是 display 可以加入更多的判斷條件。
如此一來就可以點選每個 row 後面的眼睛就可以看到該 row 的詳細資訊了,明天將 update 與 delete 作完就可以結束基礎 CRUD 了,明天見。